diff --git a/system/libraries/Config.php b/system/libraries/Config.php
index 82836b1..ef6d46a 100644
--- a/system/libraries/Config.php
+++ b/system/libraries/Config.php
@@ -46,9 +46,7 @@
 	{
 		$this->config = get_config();
 		log_message('debug', "Config Class Initialized");
-	}
-  	// END CI_Config()
-  	
+	}  	
   	
 	// --------------------------------------------------------------------
 
@@ -110,7 +108,6 @@
 		log_message('debug', 'Config file loaded: config/'.$file.EXT);
 		return TRUE;
 	}
-  	// END load()
   	
 	// --------------------------------------------------------------------
 
@@ -152,7 +149,6 @@
 
         return $pref;
 	}
-  	// END item()
   	
   	// --------------------------------------------------------------------
 
@@ -186,9 +182,6 @@
         
         return $pref;
 	}
-  	// END item()
-  	
-  	
   	
 	// --------------------------------------------------------------------
 
@@ -216,8 +209,7 @@
 			return $this->slash_item('base_url').$this->slash_item('index_page').preg_replace("|^/*(.+?)/*$|", "\\1", $uri).$suffix;
 		}
 	}
-  	// END site_url()
-  	
+	
 	// --------------------------------------------------------------------
 
 	/**
@@ -231,7 +223,6 @@
 		$x = explode("/", preg_replace("|/*(.+?)/*$|", "\\1", BASEPATH));
 		return $this->slash_item('base_url').end($x).'/';
 	}
-  	// END system_url()
   	
 	// --------------------------------------------------------------------
 
@@ -247,7 +238,6 @@
 	{
 		$this->config[$item] = $value;
 	}
-	// END set_item()
 
 }
 
diff --git a/system/libraries/Exceptions.php b/system/libraries/Exceptions.php
index 4bdbe4f..a0591e4 100644
--- a/system/libraries/Exceptions.php
+++ b/system/libraries/Exceptions.php
@@ -55,7 +55,6 @@
 	{
 		// Note:  Do not log messages from this constructor.
 	}
-  	// END CI_Exceptions()
   	
 	// --------------------------------------------------------------------
 
@@ -77,7 +76,6 @@
 		
 		log_message('error', 'Severity: '.$severity.' '.$severity.' --> '.$message. ' '.$filepath.' '.$line, TRUE);
 	}
-	// END log_exception()
   
 	// --------------------------------------------------------------------
 
@@ -97,7 +95,6 @@
 		echo $this->show_error($heading, $message, 'error_404');
 		exit;
 	}
-  	// END show_404()
   	
 	// --------------------------------------------------------------------
 
@@ -105,7 +102,7 @@
 	 * General Error Page
 	 *
 	 * This function takes an error message as input
-	 * (either as a string or an array) and displayes
+	 * (either as a string or an array) and displays
 	 * it using the specified template.
 	 *
 	 * @access	private
@@ -128,8 +125,6 @@
 		ob_end_clean();
 		return $buffer;
 	}
-	// END show_error()
-
   
 	// --------------------------------------------------------------------
 
@@ -166,8 +161,8 @@
 		ob_end_clean();
 		echo $buffer;
 	}
-  	// END show_php_error()
 
-// END Exceptions Class
+
 }
+// END Exceptions Class
 ?>
\ No newline at end of file
diff --git a/system/libraries/Hooks.php b/system/libraries/Hooks.php
index 3c35c90..6f48723 100644
--- a/system/libraries/Hooks.php
+++ b/system/libraries/Hooks.php
@@ -109,7 +109,6 @@
 		
 		return TRUE;
 	}
-  	// END hook_exists()
 
 	// --------------------------------------------------------------------
 
@@ -218,8 +217,6 @@
 		$this->in_progress = FALSE;
 		return TRUE;
 	}
-  	// END _run_hook()
-
 
 }
 
diff --git a/system/libraries/Image_lib.php b/system/libraries/Image_lib.php
index 16583c0..f8c05f8 100644
--- a/system/libraries/Image_lib.php
+++ b/system/libraries/Image_lib.php
@@ -92,7 +92,6 @@
 		
 		log_message('debug', "Image Lib Class Initialized");
 	}
-	// END CI_Image_lib()
 	
 	// --------------------------------------------------------------------
 	
@@ -113,7 +112,6 @@
 			$this->$val = '';
 		}  		
 	}
-	// END clear()
 	
 	// --------------------------------------------------------------------
 	
@@ -186,7 +184,7 @@
 		$this->source_image = end($x);
 		$this->source_folder = str_replace($this->source_image, '', $full_source_path);
 								
-		// Set the Image Propterties
+		// Set the Image Properties
 		if ( ! $this->get_image_properties($this->source_folder.$this->source_image))
 		{
 			return FALSE;       	
@@ -333,7 +331,6 @@
 
 		return TRUE;
 	} 
-	// END initialize()
 	
 	// --------------------------------------------------------------------
 	
@@ -357,7 +354,6 @@
 		
 		return $this->$protocol('resize');
 	}
-	// END resize()
 	
 	// --------------------------------------------------------------------
 	
@@ -381,7 +377,6 @@
 		
 		return $this->$protocol('crop');
 	}
-	// END crop()
 	
 	// --------------------------------------------------------------------
 	
@@ -435,7 +430,6 @@
 			return $this->image_rotate_gd();
 		}
 	}
-	// END rotate()
 	
 	// --------------------------------------------------------------------
 	
@@ -540,7 +534,6 @@
 		
 		return TRUE;
 	}
-	// END image_process_gd()
 	
 	// --------------------------------------------------------------------
 	
@@ -611,7 +604,6 @@
 		
 		return TRUE;
 	}
-	// END image_process_imagemagick()
 	
 	// --------------------------------------------------------------------
 	
@@ -698,7 +690,6 @@
 		
 		return TRUE;
 	}
-	// END image_process_netpbm()
 	
 	// --------------------------------------------------------------------
 	
@@ -758,7 +749,6 @@
 		
 		return true;
 	}
-	// END image_rotate_gd()
 	
 	// --------------------------------------------------------------------
 	
@@ -843,7 +833,6 @@
 		
 		return TRUE;
 	}
-	// END image_mirror_gd()
 	
 	// --------------------------------------------------------------------
 	
@@ -868,7 +857,6 @@
 			return $this->text_watermark();
 		}
 	}
-	// END image_mirror_gd()
 	
 	// --------------------------------------------------------------------
 	
@@ -969,7 +957,6 @@
 				
 		return TRUE;
 	}
-	// END overlay_watermark()
 	
 	// --------------------------------------------------------------------
 	
@@ -1110,7 +1097,6 @@
 	
 		return TRUE;
 	}
-	// END text_watermark()
 	
 	// --------------------------------------------------------------------
 	
@@ -1168,12 +1154,11 @@
 		$this->set_error(array('imglib_unsupported_imagecreate'));
 		return FALSE;
 	}
-	// END image_create_gd()
 	
 	// --------------------------------------------------------------------
 	
 	/**
-	 * Write imge file to disk - GD
+	 * Write image file to disk - GD
 	 *
 	 * Takes an image resource as input and writes the file 
 	 * to the specified destination
@@ -1226,12 +1211,11 @@
 	
 		return TRUE;
 	}	
-	// END image_save_gd()
 	
 	// --------------------------------------------------------------------
 	
 	/**
-	 * Dynamically ouputs an image
+	 * Dynamically outputs an image
 	 *
 	 * @access	public
 	 * @param	resource
@@ -1256,18 +1240,17 @@
 				break;		
 		}			
 	}
-	// END image_display_gd()
 	
 	// --------------------------------------------------------------------
 	
 	/**
-	 * Reproportion Image Width/Height
+	 * Re-proportion Image Width/Height
 	 *
 	 * When creating thumbs, the desired width/height
 	 * can end up warping the image due to an incorrect 
 	 * ratio between the full-sized image and the thumb. 
 	 * 
-	 * This function lets us reproportion the width/height
+	 * This function lets us re-proportion the width/height
 	 * if users choose to maintain the aspect ratio when resizing.
 	 *
 	 * @access	public
@@ -1303,7 +1286,6 @@
 			}
 		}
 	}	
-	// END image_reproportion()
 	
 	// --------------------------------------------------------------------
 	
@@ -1355,7 +1337,6 @@
 		
 		return TRUE;
 	}
-	// END get_image_properties()
 	
 	// --------------------------------------------------------------------
 	
@@ -1406,7 +1387,6 @@
 	
 		return $vals;
 	}
-	// END size_calculator()
 	
 	// --------------------------------------------------------------------
 	
@@ -1447,7 +1427,6 @@
 		
 		return $ret;
 	}	
-	// END explode_name()
 	
 	// --------------------------------------------------------------------
 	
@@ -1469,7 +1448,6 @@
 		
 		return TRUE;
 	}
-	// END gd_loaded()
 	
 	// --------------------------------------------------------------------
 	
@@ -1491,7 +1469,6 @@
 		
 		return FALSE;
 	}
-	// END gd_version()
 	
 	// --------------------------------------------------------------------
 	
@@ -1524,7 +1501,6 @@
 			log_message('error', $msg);
 		}
 	}
-	// END set_error()
 	
 	// --------------------------------------------------------------------
 	
@@ -1545,7 +1521,7 @@
 	
 		return $str;
 	}
-	// END display_errors()
+
 }
 // END Image_lib Class
 ?>
\ No newline at end of file
diff --git a/system/libraries/Input.php b/system/libraries/Input.php
index 72344e3..57696c8 100644
--- a/system/libraries/Input.php
+++ b/system/libraries/Input.php
@@ -55,7 +55,7 @@
 	/**
 	 * Sanitize Globals
 	 *
-	 * This function does the folowing:
+	 * This function does the following:
 	 *
 	 * Unsets $_GET data (if query strings are not enabled)
 	 *
@@ -114,7 +114,7 @@
 	// --------------------------------------------------------------------
 	
 	/**
-	 * Clean Intput Data
+	 * Clean Input Data
 	 *
 	 * This is a helper function. It escapes data and 
 	 * standardizes newline characters to \n
@@ -399,7 +399,7 @@
 		$str = preg_replace('/(\\\\0)+/', '', $str);
 
 		/*
-		 * Validate standard character entites
+		 * Validate standard character entities
 		 *
 		 * Add a semicolon if missing.  We do this to enable
 		 * the conversion of entities to ASCII later.
@@ -408,7 +408,7 @@
 		$str = preg_replace('#(&\#*\w+)[\x00-\x20]+;#u',"\\1;",$str);
 		
 		/*
-		 * Validate UTF16 two byte encodeing (x00) 
+		 * Validate UTF16 two byte encoding (x00) 
 		 *
 		 * Just as above, adds a semicolon if missing.
 		 *
@@ -501,7 +501,7 @@
 		 *
 		 * Note: This code is a little blunt.  It removes
 		 * the event handler and anything up to the closing >, 
-		 * but it's unlkely to be a problem.
+		 * but it's unlikely to be a problem.
 		 *
 		 */		
 		 $str = preg_replace('#(<[^>]+.*?)(onblur|onchange|onclick|onfocus|onload|onmouseover|onmouseup|onmousedown|onselect|onsubmit|onunload|onkeypress|onkeydown|onkeyup|onresize)[^>]*>#iU',"\\1>",$str);
@@ -525,7 +525,7 @@
 		 * tags it looks for PHP and JavaScript commands
 		 * that are disallowed.  Rather than removing the
 		 * code, it simply converts the parenthesis to entities
-		 * rendering the code unexecutable.
+		 * rendering the code un-executable.
 		 *
 		 * For example:	eval('some code')
 		 * Becomes:		eval&#40;'some code'&#41;
diff --git a/system/libraries/Language.php b/system/libraries/Language.php
index 00e2fb7..8250807 100644
--- a/system/libraries/Language.php
+++ b/system/libraries/Language.php
@@ -38,7 +38,6 @@
 	{
 		log_message('debug', "Language Class Initialized");
 	}
-	// END CI_Language()
 	
 	// --------------------------------------------------------------------
 	
@@ -103,7 +102,6 @@
 		log_message('debug', 'Language file loaded: language/'.$idiom.'/'.$langfile);
 		return TRUE;
 	}
-	// END load()
 	
 	// --------------------------------------------------------------------
 	
@@ -118,7 +116,6 @@
 	{
 		return ($line == '' OR ! isset($this->language[$line])) ? FALSE : $this->language[$line];
 	}
-	// END line()
 
 }
 // END Language Class
diff --git a/system/libraries/Loader.php b/system/libraries/Loader.php
index 253d916..849ee73 100644
--- a/system/libraries/Loader.php
+++ b/system/libraries/Loader.php
@@ -820,7 +820,7 @@
 	 * Assign to Models
 	 *
 	 * Makes sure that anything loaded by the loader class (libraries, plugins, etc.)
-	 * will be available to modles, if any exist.
+	 * will be available to models, if any exist.
 	 *
 	 * @access	private
 	 * @param	object
@@ -855,7 +855,7 @@
 	/**
 	 * Object to Array
 	 *
-	 * Takes an object as input and convers the class variables to array key/vals
+	 * Takes an object as input and converts the class variables to array key/vals
 	 *
 	 * @access	private
 	 * @param	object
diff --git a/system/libraries/Pagination.php b/system/libraries/Pagination.php
index b29571e..26fb93e 100644
--- a/system/libraries/Pagination.php
+++ b/system/libraries/Pagination.php
@@ -199,7 +199,7 @@
         }
     
 		// Kill double slashes.  Note: Sometimes we can end up with a double slash 
-		// in the penultimate link so we'll kill all double shashes.
+		// in the penultimate link so we'll kill all double slashes.
 		$output = preg_replace("#([^:])//+#", "\\1/", $output);  
 
 		// Add the wrapper HTML if exists
diff --git a/system/libraries/Parser.php b/system/libraries/Parser.php
index a0c9dab..ebf7644 100644
--- a/system/libraries/Parser.php
+++ b/system/libraries/Parser.php
@@ -71,7 +71,6 @@
 		
 		return $template;
 	}
-	// END set_method()
 	
 	// --------------------------------------------------------------------
 	
@@ -88,7 +87,6 @@
 		$this->l_delim = $l;
 		$this->r_delim = $r;
 	}
-	// END set_method()
 	
 	// --------------------------------------------------------------------
 	
@@ -105,7 +103,6 @@
 	{
 		return str_replace($this->l_delim.$key.$this->r_delim, $val, $string);
 	}
-	// END set_method()
 	
 	// --------------------------------------------------------------------
 	
@@ -148,7 +145,6 @@
 		
 		return str_replace($match['0'], $str, $string);
 	}
-	// END set_method()
 	
 	// --------------------------------------------------------------------
 	
@@ -169,7 +165,6 @@
 		
 		return $match;
 	}
-	// END _match_pair()
 
 }
 // END Parser Class
diff --git a/system/libraries/Profiler.php b/system/libraries/Profiler.php
index 7fecabd..6e6fb67 100644
--- a/system/libraries/Profiler.php
+++ b/system/libraries/Profiler.php
@@ -46,7 +46,7 @@
 	 * Auto Profiler
 	 *
 	 * This function cycles through the entire array of mark points and
-	 * matches any two points that are named identially (ending in "_start"
+	 * matches any two points that are named identically (ending in "_start"
 	 * and "_end" respectively).  It then compiles the execution times for
 	 * all points and returns it as an array
 	 *
diff --git a/system/libraries/Router.php b/system/libraries/Router.php
index 94a9a52..6002027 100644
--- a/system/libraries/Router.php
+++ b/system/libraries/Router.php
@@ -58,7 +58,7 @@
 	/**
 	 * Set the route mapping
 	 *
-	 * This function determies what should be served based on the URI request,
+	 * This function determines what should be served based on the URI request,
 	 * as well as any "routes" that have been set in the routing config file.
 	 *
 	 * @access	private
@@ -322,7 +322,7 @@
 			
 			// OK, how about REQUEST_URI?  
 			// Note: REQUEST_URI is not supplied in a consistent manner with all platforms so it's
-			// a diffucult variable to use.  We'll try to parse it out correctly.  Hopfully one 
+			// a difficult variable to use.  We'll try to parse it out correctly.  Hopefully one 
 			// of the other variables above was available.
 			$path = $this->_parse_request_uri();
 			if ($path != "")
@@ -452,10 +452,10 @@
 			return;
 		}
 				
-		// Loop through the route array looking for wildcards
+		// Loop through the route array looking for wild-cards
 		foreach (array_slice($this->routes, 1) as $key => $val)
 		{						
-			// Convert wildcards to RegEx
+			// Convert wild-cards to RegEx
 			$key = str_replace(':any', '.+', str_replace(':num', '[0-9]+', $key));
 			
 			// Does the RegEx match?
diff --git a/system/libraries/Session.php b/system/libraries/Session.php
index 8390fd6..a47599d 100644
--- a/system/libraries/Session.php
+++ b/system/libraries/Session.php
@@ -35,8 +35,7 @@
     var $sess_cookie	= 'ci_session';
 	var $userdata		= array();
     var $gc_probability	= 5;
-
-    
+ 
 
 	/**
 	 * Session Constructor
@@ -51,7 +50,6 @@
 		log_message('debug', "Session Class Initialized");
 		$this->sess_run();
 	}
-	// END display_errors()
 	
 	// --------------------------------------------------------------------
 	
diff --git a/system/libraries/Sha1.php b/system/libraries/Sha1.php
index 13196eb..971c091 100644
--- a/system/libraries/Sha1.php
+++ b/system/libraries/Sha1.php
@@ -117,7 +117,6 @@
         
         return $this->_hex($a).$this->_hex($b).$this->_hex($c).$this->_hex($d).$this->_hex($e);
     }
-  	// END generate()
   	
 	// --------------------------------------------------------------------
 
@@ -139,7 +138,6 @@
             
         return $str;
     }    
-  	// END _hex()
   	
 	// --------------------------------------------------------------------
 
@@ -160,7 +158,6 @@
         
         return $b ^ $c ^ $d;
     }
-    // END _ft()
   
 	// --------------------------------------------------------------------
 
@@ -189,7 +186,6 @@
             return -899497514;
         }
     }
-  	// END _kt()
   	
 	// --------------------------------------------------------------------
 
@@ -206,7 +202,6 @@
     
         return ($msw << 16) | ($lsw & 0xFFFF);
     }
-  	// END _safe_add()
   	
 	// --------------------------------------------------------------------
 
diff --git a/system/libraries/Table.php b/system/libraries/Table.php
index 758676e..c40c85e 100644
--- a/system/libraries/Table.php
+++ b/system/libraries/Table.php
@@ -123,7 +123,7 @@
 			return 'Undefined table data';
 		}
 	
-		// Compile and validate the templata date
+		// Compile and validate the template date
 		$this->_compile_template();
 	
 	
diff --git a/system/libraries/Trackback.php b/system/libraries/Trackback.php
index 8b6cce1..7464915 100644
--- a/system/libraries/Trackback.php
+++ b/system/libraries/Trackback.php
@@ -120,8 +120,7 @@
 		}
 
 		return $return;
-	}	
-	// END send()
+	}
 	
 	// --------------------------------------------------------------------
 	
@@ -165,14 +164,13 @@
 
 		return TRUE;
 	}	
-	// END receive()
 	
 	// --------------------------------------------------------------------
 	
 	/**
 	 * Send Trackback Error Message
 	 *
-	 * Allows custom errros to be set.  By default it 
+	 * Allows custom errors to be set.  By default it 
 	 * sends the "incomplete information" error, as that's
 	 * the most common one.
 	 *
@@ -185,7 +183,6 @@
 		echo "<?xml version=\"1.0\" encoding=\"utf-8\"?".">\n<response>\n<error>1</error>\n<message>".$message."</message>\n</response>";
 		exit;
 	}
-	// END send_error()
 	
 	// --------------------------------------------------------------------
 	
@@ -203,7 +200,6 @@
 		echo "<?xml version=\"1.0\" encoding=\"utf-8\"?".">\n<response>\n<error>0</error>\n</response>";
 		exit;
 	}
-	// END send_success()
 	
 	// --------------------------------------------------------------------
 	
@@ -218,7 +214,6 @@
 	{
 		return ( ! isset($this->data[$item])) ? '' : $this->data[$item];
 	}
-	// END data()
 
 	// --------------------------------------------------------------------
 	
@@ -287,7 +282,6 @@
 
 		return TRUE;
 	}
-	// END process()
 	
 	// --------------------------------------------------------------------
 	
@@ -326,7 +320,6 @@
 		
 		return $urls;
 	}
-	// END extract_urls()
 	
 	// --------------------------------------------------------------------
 	
@@ -348,7 +341,6 @@
 			$url = "http://".$url;
 		}
 	}
-	// END validate_url()
 	
 	// --------------------------------------------------------------------
 	
@@ -401,7 +393,6 @@
 			return $tb_id;
 		}		
 	}
-	// END get_id()
 	
 	// --------------------------------------------------------------------
 	
@@ -428,7 +419,6 @@
 			
 		return $str;
 	}	
-	// END get_id()
 	
 	// --------------------------------------------------------------------
 	
@@ -467,7 +457,6 @@
 			}		
 		}
 	}
-	// END get_id()
 	
 	// --------------------------------------------------------------------
 	
@@ -517,7 +506,6 @@
 	   
 	   return $out;
 	}
-	// END convert_ascii()
 	
 	// --------------------------------------------------------------------
 	
@@ -533,7 +521,6 @@
 		log_message('error', $msg);
 		$this->error_msg[] = $msg;
 	}
-	// END convert_ascii()
 	
 	// --------------------------------------------------------------------
 	
@@ -555,7 +542,7 @@
 	
 		return $str;
 	}
-	// END display_errors()
+
 }
 // END Trackback Class
 ?>
\ No newline at end of file
diff --git a/system/libraries/Unit_test.php b/system/libraries/Unit_test.php
index 4151623..6bfc59d 100644
--- a/system/libraries/Unit_test.php
+++ b/system/libraries/Unit_test.php
@@ -220,7 +220,7 @@
 	 * This lets us set the template to be used to display results
 	 *
 	 * @access	public
-	 * @params	string
+	 * @param	string
 	 * @return	void
 	 */	
 	function set_template($template)
diff --git a/system/libraries/Upload.php b/system/libraries/Upload.php
index 5bb506c..09a4794 100644
--- a/system/libraries/Upload.php
+++ b/system/libraries/Upload.php
@@ -284,8 +284,8 @@
 	 * Set the file name 
 	 *
 	 * This function takes a filename/path as input and looks for the 
-	 * existnace of a file with the same name. If found, it will append a 
-	 * number to the end of the filename to avoid overwritting a pre-existing file.
+	 * existence of a file with the same name. If found, it will append a 
+	 * number to the end of the filename to avoid overwriting a pre-existing file.
 	 *
 	 * @access	public
 	 * @param	string
